#include <iostream>

#include "game.h"
#include "threads.h"

using namespace std;

int main(int argc, char **argv)
{
	// port d'ecoute TCP des messages du serveur
	u_short portEcouteServeur = 2330;
	// port d'ecoute TCP de connection des clients
	u_short portEcoute = 2331;
	// port d'ecoute UDP des mouvements des joueurs
	u_short portLecture = 2332;

	// port d'ecoute UDP du client distant
	u_short portEcouteDistant = 8880;
	// port d'ecoute TCP du serveur principal
	u_short portEcouteServeurPrincipal = 7770;

	string adresseServeurPrincipal;
	cout << "Adresse du serveur principal :" << endl;
	cin >> adresseServeurPrincipal;
	cout << "Connexion au serveur...\n" << endl;

	Game * jeux = new Game(portEcoute, portLecture, portEcouteServeur, portEcouteDistant, portEcouteServeurPrincipal, adresseServeurPrincipal);

	// Lancement thread d'ecoute du serveur :
	pthread_t * join_toEcouteServeur = jeux->initEcouteServeur();

	// si connexion au serveur principal reussie
	if (jeux->serveurConnection() == 0)
	{
		// Lancement thread d'ecoute des clients :
		pthread_t * join_toEcoute = jeux->initEcoute();
		// Lancement thread de lecture :
		pthread_t * join_toLecture = jeux->initLecture();

		(void) pthread_join(*join_toEcoute, NULL);
		(void) pthread_join(*join_toLecture, NULL);
		(void) pthread_join(*join_toEcouteServeur, NULL);
	}
	else
		printf("Erreur de connexion au serveur principal.\n");

	return 0;
}
